{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Rental Listing Inquiries\n",
    "## 刘晓明 第三周作业（part 3）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第四步：\n",
    "## 利用max_depth 、 min_child_weight以及正则项reg_alpha 、reg_lambda调参结果\n",
    "## 调用xgboost内嵌的cv再次寻找最佳的参数n_estimators"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 根据之前计算的各优化参数，重新计算弱学习器的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('2_re_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 9}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=220,  #第一次计算的数量，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        reg_alpha =1,\n",
    "        reg_lambda =1,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最优的n_estimators： 220\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb5a6e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "print(\"最优的n_estimators：\",cvresult.shape[0])    \n",
    "\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "#pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "#pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.errorbar(x_axis, test_means, label='Test')\n",
    "pyplot.errorbar(x_axis, train_means,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x975cef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[50:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(50,cvresult.shape[0]+50)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
